package ixRedis

import "fmt"

// NewClient 创建单个 Redis 客户端
func NewClient(config *Config) (*Client, error) {
	if config == nil {
		config = DefaultConfig()
	}

	manager := NewManager()
	// 使用配置的哈希值作为唯一标识，避免配置冲突
	configKey := fmt.Sprintf("config_%s_%d_%s_%d",
		config.Host, config.Port, config.Password, config.DB)
	manager.AddConfig(configKey, config)
	return manager.GetClient(configKey)
}

// NewClientWithOptions 使用选项创建 Redis 客户端
func NewClientWithOptions(host string, port int, options ...func(*Config)) (*Client, error) {
	config := DefaultConfig()
	config.Host = host
	config.Port = port

	for _, option := range options {
		option(config)
	}

	return NewClient(config)
}
